// vue基本配置
// https://cli.vuejs.org/zh/config/
const path = require('path')
const defaultSettings = require('./src/settings.js')

function resolve(dir) {
  return path.join(__dirname, dir)
}

module.exports = {
  // 关闭eslint代码规范校验
  lintOnSave: true,
  // 编译文件夹
  outputDir: 'dist',
  assetsDir: 'source',
  // 是否使用包含运行时编译器的 Vue 构建版本。设置为 true 后你就可以在 Vue 组件中使用 template 选项了，但是这会让你的应用额外增加 10kb 左右。
  runtimeCompiler: true,
 
  // 如果你不需要生产环境的 source map，可以将其设置为 false 以加速生产环境构建。
  productionSourceMap: false,

  // 打包成正式环境时 
  publicPath: process.env.NODE_ENV === 'production'
    ? ''
    : '/',

  //webpackjs相关
  //https://www.webpackjs.com/concepts/

  //所有 webpack-dev-server 的选项都支持。注意
  devServer: {
    //proxy: 'http://localhost:4000'
    /*devServer: {
        proxy: {
          '/api': {
            target: '<url>',
            ws: true,
            changeOrigin: true
          },
          '/foo': {
            target: '<other_url>'
          }
        }
      }*/
      
    port: defaultSettings.port,
    host: '0.0.0.0',
    open: false,
    disableHostCheck: true
  },


  configureWebpack: {
    resolve: {
      extensions: ['.js', '.vue', '.json'],
      alias: {
        '@': resolve('src'),
        'views': resolve('src/views'),
        'utils': resolve('src/utils'),
        'components': resolve('src/components'),
      }
    }
  },


  // 会接收一个基于 webpack-chain的 ChainableConfig 实例
  chainWebpack(config) {
    config.module
      .rule('vue')
      .use('vue-loader')
      .loader('vue-loader')
      .tap(options => {
          // 它的作用是阻止元素间生成空白内容
        options.compilerOptions.preserveWhitespace = true
        return options
      })
      .end()
  },

  // css相关
  css: {
    loaderOptions: {
      postcss: {
        plugins: [
            // 引入postcss-pxtorem插件
          require('postcss-pxtorem')({
            // 换算的基数 16px = 1rem
            rootValue: 16,
            // 适用于全部属性
            // Use ! to not match a property. Example: ['*', '!someParam']
            propList: ['*']
          })
        ]
      }
    }
  }
}